/* ******       ************************        **********************************        ************************       ***** */
/*                                                                                                                             */
/* ******       Informations :                                                                                           ***** */
/*              Code crée par Julien Couet pour le cour de maitrise MTI880 de l'ETS (http://www.etsmtl.ca/) encadré par        */
/*              le professeur Luc Duong   http://profs.etsmtl.ca/lduong/cours/mti880/                                          */
/*                                                                                                                             */
/* ******       Licence, Droits et Garantie :                                                                            ***** */
/*              Ce code est libre de tous droits dans la limite de ceux de OpenCV : http://opencv.willowgarage.com/wiki/       */
/*              qui est sous licence 'BSD' :  http://en.wikipedia.org/wiki/BSD_licenses                                        */
/*                                                                                                                             */
/* ******       Contacts :                                                                                               ***** */
/*              couet.julien@gmail.com                                                                                         */
/*                                                                                                                             */
/* ******       ************************        **********************************        ************************       ***** */


#include "imagewidget.h"
#include "logger.h"

using namespace views;


            /** *****       ************************        **********************************        ************************       **** **/
            /** *****                                                                                                                **** **/
            /** *****                                                 Classe imageWidget                                             **** **/
            /** *****                                                                                                                **** **/
            /** *****                    Permet d'afficher une image dans un widget Qt via la classe QPainter                        **** **/
            /** *****                                                                                                                **** **/
            /** *****                                   1. Constructeur & Destructeur                                                **** **/
            /** *****                                   2. Affichage de l'image                                                      **** **/
            /** *****                                                                                                                **** **/
            /** *****       ************************        **********************************        ************************       **** **/



/** *****       ************************        **********************************        ************************       **** **/
/** *****       ************************            1. Constructeur & Destructeur         ************************       **** **/

/// 1.1     Constructeur
ImageWidget::ImageWidget(QWidget *parent) : QWidget(parent) {
   _qtImage = new QImage;

    update();
}

ImageWidget::ImageWidget(QWidget *parent, QSize size) : QWidget(parent) {
   _qtImage = new QImage;

    QImage dummy = QImage(size, QImage::Format_RGB32);
    dummy.fill(qRgb(255, 255, 255));
    *_qtImage = dummy;
    update();
}

/// 1.2     Constructeur
ImageWidget::~ImageWidget() {
    // Rien car un objet de la classe QImage n'a pas besoin d'etre desalloué (memoire)
}


/** *****       ************************          fin Constructeur & Destructeur          ************************       **** **/
/** *****       ************************        **********************************        ************************       **** **/



                                                /********************************/
                                                /********************************/



/** *****       ************************        **********************************        ************************       **** **/
/** *****       ************************            2.   Affichage de l'image             ************************       **** **/

/// 2.1     Insertion de la nouvelle image à afficher
void ImageWidget::setImage(QImage qtImage) {
    //cout << "ImageWidget::setImage(QImage qtImage)" << endl;
     *_qtImage = qtImage;
     update();
}

/// 2.2     Affichage de l'image via QPainter. Appeler à chaque update();
void ImageWidget::paintEvent(QPaintEvent *event) {
    //cout << "ImageWidget::paintEvent(QPaintEvent *event)" << endl;
    QPainter painter;
    painter.begin(this);
       painter.drawPixmap(0, 0, QPixmap::fromImage(*_qtImage));
    painter.end();
}


/** *****       ************************              fin Affichage de l'image            ************************       **** **/
/** *****       ************************        **********************************        ************************       **** **/


